home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / libs / mlib / include / mlist.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-03-02  |  3.2 KB  |  75 lines

  1.  
  2. #ifndef __MLIST_H
  3. #define __MLIST_H
  4.  
  5. #define LLIST_ID             0x0112
  6.  
  7. class LLElem {
  8. public:
  9.     LLElem                 * next;
  10.     LLElem                 * prev;
  11.     MObject            * data;
  12. public:
  13.                  LLElem (void) { next = NULL; prev = NULL; data = NULL;};
  14.                 ~LLElem (void) {};
  15. };
  16.  
  17. class LList : public MObject {
  18. protected:
  19.     LLElem                 * Head;
  20.     LLElem                 * Tail;
  21. public:
  22.     WORD              CurSize;
  23.     WORD                     MaxSize;
  24.     LLElem                 * Current;
  25. public:
  26.                  LList (WORD TheMaxSize = MAXWORD);
  27.     virtual void             Delete (void);
  28.     void                     End (void);
  29.     void                     End (LLElem * Window);
  30.     virtual BOOL             First (void);
  31.     virtual MObject *        FirstThat (CondFuncType, void * );
  32.     virtual void             ForEach (IterFuncType, void * );
  33.     LLElem *                 GetCurrent (void);
  34.     virtual WORD             GetCurrentOffset (void);
  35.     virtual void             InsertAfter (MObject * elem);
  36.     virtual void             InsertBefore (MObject * elem);
  37.     virtual classType        isA (void);
  38.     virtual inline BOOL      IsEmpty (void) const;
  39.     virtual inline BOOL      IsFull (void) const;
  40.     virtual inline BOOL      Last (void);
  41.     virtual MObject *        LastThat (CondFuncType, void * );
  42.     virtual inline void      MakeCurrent (LLElem * Window);
  43.     virtual void             MoveDown (void);
  44.     virtual void             MoveDown (LLElem * Window);
  45.     virtual void             MoveUp (void);
  46.     virtual void             MoveUp (LLElem * Window);
  47.     virtual MObject *        Remove (void);
  48.     virtual MObject *        Retrieve (void);
  49.     virtual MObject *        Retrieve (LLElem * Window);
  50.     virtual BOOL             OnList (void) const;
  51.     virtual BOOL             OnList (LLElem * Window) const;
  52.     virtual void             printOn (ostream& os);
  53.     virtual void             SetCurrentOffset (WORD NewOffset);
  54.     virtual void             SetCurrentOffset (LLElem * Window, WORD NewOffset);
  55.     void                     Start (void);
  56.     void                     Start (LLElem * Window);
  57.     virtual void             Swap (LLElem * Window);
  58.                 ~LList (void);
  59. };
  60.  
  61. ////////// INLINES ////////////////////////////////////////////////////////////
  62.  inline void LList :: End (void)            { Current = Tail;};
  63.  inline void LList :: End (LLElem * Window) { Window = Tail;};
  64.  inline BOOL LList :: First (void)          { return (Current == Head);};
  65.  inline LLElem * LList :: GetCurrent (void) { return (Current);};
  66.  inline classType LList :: isA (void)       { return (LLIST_ID);};
  67.  inline BOOL LList :: IsEmpty (void) const  { return (Head == NULL);};
  68.  inline BOOL LList :: IsFull (void) const   { return (CurSize >= MaxSize);};
  69.  inline BOOL LList :: Last (void)           { return (Current == Tail);};
  70.  inline void LList :: MakeCurrent (LLElem * Window) { Current = Window;};
  71.  inline void LList :: Start (void)                  { Current = Head;};
  72.  inline void LList :: Start (LLElem * Window)       { Window = Head;};
  73. ///////////////////////////////////////////////////////////////////////////////
  74. #endif
  75.